OktaのAWSアカウントフェデレーションをやってみる

OktaのAWSアカウントフェデレーションをやってみる

Clock Icon2024.12.18

こんにちは、ゲームソリューション部/業務効率化ソリューション部の新屋です。

本ブログはClassmethod ゲーソル・ギョーソル Advent Calendar 2024の18日目のブログとなります。

本日は、Okta WICとAWSアカウントを連携させる方法の1つである、AWSアカウントフェデレーションについて試していきます。

前提

OktaとAWS IAM Identity Centerを統合してシングルサインオンする設定を理解している

https://dev.classmethod.jp/articles/okta-wic-aws-sso/

モチベーション

OktaからIAM Identity Centerの統合を設定しようとアプリカタログを眺めていると、「AWSアカウントフェデレーション」というアプリケーションが見当たります。

okta-aws-account-federation_1

AWS…アカウント…フェデレーション…?

何やらシングルサインオンが出来そうな名称なんですが、同じくシングルサインオンの機能を提供してくれるIAM Identity Center統合と何が違うのでしょうか?

Oktaを経由してAWSアカウントにシングルサインオンするのは同じです。

このアカウントフェデレーションは、割り当てたIAMロールでAWSアカウントにサインオンすることができる機能です。

IAM Identity Center統合とどっちを使うかの判断は、主にAWS Organizationsで組織のAWSアカウントを統制するかどうか、がポイントになると思います。IAM Identity Center統合は、Oktaで作成するアプリケーション1つに対してIAM Identity Centerを中継して、複数のAWSアカウントを紐づけることが出来ます。

一方で、アカウントフェデレーションはOktaで作成するアプリケーションに紐づけられるAWSアカウントは1つまでです。

OktaのIAM Identity Center統合とアカウントフェデレーションのイメージ

okta-aws-account-federation_2

Organizationsを使うほどAWSアカウントが多くない場合は、右側のアカウントフェデレーションのを使うと良さそうです。

設定手順

(Okta)アプリ統合カタログからAWSアカウントフェデレーションを作成する

Okta管理者ダッシュボードからアプリケーション > アプリカタログを参照からAWSと検索して、アカウントフェデレーションを選択します。

okta-aws-account-federation_3

(Okta)設定を行う

一般設定はそのままでOKです。

okta-aws-account-federation_4

サインオンオプションはSAML2.0を選択します。

そして、メタデータURLをコピーして別タブで開いてください。

okta-aws-account-federation_5

(Okta)メタデータを保存する

URLを開くとメタデータが表示されますので、これをxml形式で保存してください。名称は適当で大丈夫です。

okta-aws-account-federation_6

okta-aws-account-federation_7

(AWS)IAMからIDプロバイダを作成する

IAM > IDプロバイダと移動して、プロバイダの追加を選択してください。

okta-aws-account-federation_8

(AWS)メタデータのアップロード

先ほど保存したxmlファイルをアップロードしてください。プロバイダの名称は適当で大丈夫です。

okta-aws-account-federation_9

作成したらこのIDプロバイダのARNをコピーします。

okta-aws-account-federation_10

(Okta)IDプロバイダのARNをセットする

Oktaの設定画面に戻って、IDプロバイダのARNを入力し、完了または設定を保存します。

okta-aws-account-federation_11

(AWS)シングルサインオンするときに引き受けるIAMロールを作成する

SAML2.0フェデレーションから、さっき作成したIDプロバイダーを選択します。

okta-aws-account-federation_12

今回は、EC2ReadOnlyAccessの権限でロールを作成します。

okta-aws-account-federation_13

ここは特になにもしなくてOK

okta-aws-account-federation_14

(AWS)さっき作成したIAMロールをOkta側で参照するために、Okta APIが利用するIAMユーザーを作成する

作成をはじめます。

okta-aws-account-federation_16

ポリシーを作成します。

okta-aws-account-federation_17

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "iam:ListRoles",
                "iam:ListAccountAliases"
            ],
            "Resource": "*"
        }
    ]
}

ポリシーをユーザーにアタッチして、作成を押下します。

okta-aws-account-federation_18

このユーザーのAccessKeyとAccessSecretを取得します。

okta-aws-account-federation_19

okta-aws-account-federation_20

okta-aws-account-federation_21

取得したらコピーします。

okta-aws-account-federation_22

(Okta)プロビジョニングの有効化とAPI統合を構成

okta-aws-account-federation_23

AccessKeyとAccessSecretを入力したら、テストしましょう。OKがでたら、保存してください。

okta-aws-account-federation_24

アプリへのプロビジョニングで、ユーザー作成と更新を有効化しておきましょう。

okta-aws-account-federation_25

(Okta)ユーザーをアプリケーションに割り当てる

割り当てタブから、ユーザー割り当てを選択します。

okta-aws-account-federation_26

割り当てたいユーザーを選択します。

okta-aws-account-federation_27

さっき作成したIAMロールが表示されているはずです。

okta-aws-account-federation_28

ユーザーにロールを割り当てたら動作確認をします。

動作確認

割り当てたユーザーでOktaダッシュボードにサインインすると、さっき作成したアカウントフェデレーションのアプリが表示されています。

okta-aws-account-federation_29

アプリを選択すると対象のAWSアカウントのコンソールにリダイレクトします。

okta-aws-account-federation_30

Share this article

facebook logohatena logotwitter logo

© Classmethod, Inc. All rights reserved.